package cn.xxi.ai.knowledge.entity;

import cn.xxi.ai.common.entity.BaseEntity;
import cn.xxi.ai.common.entity.Tag;
import cn.xxi.ai.file.entity.File;
import cn.xxi.ai.knowledge.constant.EmbeddingModelEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;

/**
 * 知识库实体
 * 
 * @author bingo
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class Knowledge extends BaseEntity {

    /** 头像文件 */
    private File avatar;

    /** 名称（唯一或业务主键） */
    private String name;

    /** 描述 */
    private String description;

    /** 嵌入模型 */
    private EmbeddingModelEnum embeddingModel;

    /** 最大返回结果数 */
    private Integer topK;

    /** 相似度阈值 */
    private Double scoreThreshold;

    /** 标签（多对多） */
    private List<Tag> tags;

    /** 文档列表（一对多） */
    private List<Document> documents;

    /** 文档数 - 可选：如果你在 Java 中要手动映射这个字段，需要自己 set/get */
    private Integer documentCount;

    public Integer getDocumentCount() {
        return documents != null ? documents.size() : 0;
    }
}
